package com.mastercard.assets.web.struts.actions;

import com.mastercard.assets.MasterCardException;
import com.mastercard.assets.jpa.TblGanador;
import com.mastercard.assets.jpa.TblPaquete;
import com.mastercard.assets.util.MCUtil;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.GeneraGanadoresForm;
import com.mastercard.assets.web.util.to.UserLogin;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


public class GanadorAltaRegistrar
        extends
		Action
{
    
        public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
        {
            HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
                
                // formulario
                GeneraGanadoresForm f = ( GeneraGanadoresForm ) form ;
                
                int numGanadores = f.getNumGanadores( ) ;
                int cveWorkPreimplementation = f.getCveWorkPreimplementation( ) ;
                int editar = f.getEditar( ) ;
                
                // Toma los arreglos del form
                String[] gNombre = f.getGnombre( ) ;
                String[] gApellido = f.getGapellidos( ) ;
                String[] gFec_nac = f.getgFnacimiento( ) ;
                String[] Email = f.getEmail( ) ;
                String[] Tel = f.getTel( ) ;
                String[] Cel = f.getCel( ) ;
                String[] gPasaporte = f.getGpasaporte( ) ;
                String[] gVigenciaIni = f.getGvigenciaI( ) ;
                String[] gVigenciaFin = f.getGvigenciaF( ) ;
                String[] aNombre = f.getAnombre( ) ;
                String[] aApellido = f.getAapellidos( ) ;
                String[] aFec_nac = f.getaFnacimiento( ) ;
                String[] aPasaporte = f.getApasaporte( ) ;
                String[] aVigenciaIni = f.getAvigenciaI( ) ;
                String[] aVigenciaFin = f.getAvigenciaF( ) ;
                int[] cvePaquete = f.getCvePaquete( ) ;
                
//                 toma el registro correspondiente al paquete
//                List< TblPaquete > tblpack = MasterCardDAO.getPackagesWhitCveAndStatus( cvePaquete ) ;getPackageWhitCveAndStatus
                
//               TblPaquete tblpak = null ;                               
//                
//                for ( TblPaquete p : tblpack )
//                    tblpak = p ;
                        
                // ciclo para recorrer todos los registros a insetar
                for ( int x = 0 ; x < numGanadores ; x++ )
                {
                    // declara variables para tomar un solo registro
                    String VgNombre = gNombre[ x ] ;
                    String VgApellido = gApellido[ x ] ;
                    String VgFec_nac = gFec_nac[ x ] ;
                    String VEmail = Email[ x ] ;
                    String VTel = Tel[ x ] ;
                    String VCel = Cel[ x ] ;
                    String VgPasaporte = gPasaporte[ x ] ;
                    String VgVigenciaIni = gVigenciaIni[ x ] ;
                    String VgVigenciaFin = gVigenciaFin[ x ] ;
                    String VaNombre = aNombre[ x ] ;
                    String VaApellido = aApellido[ x ] ;
                    String VaFec_nac = aFec_nac[ x ] ;
                    String VaPasaporte = aPasaporte[ x ] ;
                    String VaVigenciaIni = aVigenciaIni[ x ] ;
                    String VaVigenciaFin = aVigenciaFin[ x ] ;
                    int VcvePaquete = cvePaquete[ x ] ;
                    String usuario = gPasaporte[ x ] ;
                    String password = "" ;
                    String[] pass = VgFec_nac.split("-") ;
                    
                    for ( int i = 0 ; i < pass.length ; i++ ) {
                        password += pass[ i ] ;
                    }
                    
                    TblPaquete pack = null ;
            
                    try {
                            pack = MasterCardDAO.getPackageWhitCveAndStatus( VcvePaquete ) ;
                            
                        } catch (MasterCardException ex) {
                            
                            MasterCardDAO.closeEntityManager( ) ;
                            Logger.getLogger(GanadorAltaRegistrar.class.getName()).log(Level.SEVERE, null, ex);
                        }
                                        
                    try
                    {
                        if ( editar == 1 )
                        {
                            MasterCardDAO.updateGanadores(
                                            VgNombre ,
                                            VgApellido ,
                                            VgFec_nac ,
                                            VEmail ,
                                            VTel ,
                                            VCel ,
                                            VgPasaporte ,
                                            VgVigenciaIni ,
                                            VgVigenciaFin ,
                                            VaNombre ,
                                            VaApellido ,
                                            VaFec_nac ,
                                            VaPasaporte ,
                                            VaVigenciaIni ,
                                            VaVigenciaFin ,
                                            pack ,
                                            usuario ,
                                            password
                                            ) ;
                        }else
                        {
                            MasterCardDAO.addNewGanador(
                                            VgNombre ,
                                            VgApellido ,
                                            VgFec_nac ,
                                            VEmail ,
                                            VTel ,
                                            VCel ,
                                            VgPasaporte ,
                                            VgVigenciaIni ,
                                            VgVigenciaFin ,
                                            VaNombre ,
                                            VaApellido ,
                                            VaFec_nac ,
                                            VaPasaporte ,
                                            VaVigenciaIni ,
                                            VaVigenciaFin ,
                                            pack ,
                                            usuario ,
                                            password
                                            ) ;
                        }
                            
                    }catch( MasterCardException e )
		{
                    MasterCardDAO.closeEntityManager( ) ;
			e.printStackTrace( ) ;
			
			// reproduce un error
			user.setMessageError( MCUtil.messages.getString( "com.mastercard.assets.web.modules.generarcampana.errors.ErrorAddingCampaign" , e.getSingularMessage( ) ) ) ;
			
			return mapping.findForward( "success" ) ;
		} 
                    
                }
                
               // en caso de que lo haga todo correctamente manda a la pagina de success
		user.setNextWorkArea( "/WEB-INF/pages/WorkArea/GeneraGanadoresExito.jsp" ) ;
		
		request.getSession( ).setAttribute( "cve" , cveWorkPreimplementation ) ;
		request.getSession( ).removeAttribute( "GeneraGanadoresForm" ) ;
		
                MasterCardDAO.closeEntityManager( ) ;
		return mapping.findForward( "success" ) ;
                
        }
    
}
